package br.here.negocio;

import java.util.Collection;

import br.here.data.IGenericDAO;
import br.here.data.IUsuarioDAO;
import br.here.data.UsuarioDAOImpl;
import br.here.dominio.Local;
import br.here.dominio.Usuario;
import br.here.exceptions.BDException;
import br.here.exceptions.BusinessException;

public class UsuarioCadastro {
	
	private UsuarioDAOImpl dao;
	
	public UsuarioCadastro(UsuarioDAOImpl dao){
		this.dao = dao;
	}
	
	public void addUsuario(Usuario u) throws BDException, BusinessException{
		if (validaCadastro(u)){
			try{
				dao.addUsuario(u); 
			} catch (Exception e) {
				throw new BDException();
			}
		} else {
			throw new BusinessException();
		}
	}
	
	public Usuario findByEmail(String email) throws BDException{
		return dao.findByEmail(email);
	}
	
	public Collection<Usuario> findByNomeEmail(String txt) throws BDException{
		return dao.findByNomeOuEmail(txt);
	}
	
	public Collection<Usuario> getAll() throws BDException{
		return dao.listAll();
	}
	
	public void atualizaLocal(Usuario usuario, Local local) throws BDException{
		dao.atualizaLocal(usuario, local);
	}
	
	public void addAmigo(int idU, int idA) throws BDException{
		dao.addAmigo(idU, idA);
	}
	
	public Usuario findById(Integer id) throws BDException{
		return dao.findById(id);
	}
	
	public void removeUsuario(Usuario u) throws BDException{
		dao.removeUsuarioById(u);
	}
	
	public boolean validaCadastro(Usuario u){
		if (!u.getEmail().isEmpty() &&
				!u.getSenha().isEmpty() &&
				!u.getNome().isEmpty()){
			return true;
		} else {
			return false;
		}
	}

}
